home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 12 C64 Telecom / XMODV6.TXT < prev    next >
Encoding:
Text File  |  2019-04-13  |  14.8 KB  |  850 lines

  1. *
  2. * OIIAAI DOIOIAII OAOOEII 6.0
  3. *
  4. * AIIIIAIOA 64
  5. *
  6. * OEEO OAOOEII OOAO AEIAIAIA
  7. * OODDIEAA AU AAIIEIC DOICOAI
  8. * xEOE AIIOOOOAO:
  9. *
  10. *     A$="AEIAIAIA"+AEO$(13)
  11. *     OUO 49152,A
  12. *
  13. *     xHERE A =  0   EGNORE CARRIER DETECT
  14. *           A = 16   AHECK FOR CARRIER DETECT
  15. *
  16. * IIOA: OETTING A$ *IOOO* BE JUST BEFORE OUO49152
  17. *       WITH NO INTERVENING STRING OPERATIONS!
  18. *
  19. * AIDUOECEO (A) 1986 AU
  20. * IEAOIOAAEIEA OIIOOEIIO, EIA.
  21. * AII OECEOO OAOAOOAA
  22. *
  23. * OEEO OAOOEII OAIAAOAA OI DOAIEA AIIAEI
  24. *
  25.  OO II ;TRUNCATION ON (IAOIEI)
  26.  IOC $A000
  27. *
  28. AEEEI = $AAA6
  29. AEEIOO = $AAA9
  30. AEOIOO = $AAA2
  31. AIIOA = $AAA3
  32. AIOAEI = $AAAA
  33. CAOEI = $AAA4
  34. IDAI = $AAA0
  35. OAAAOO = $AAA7
  36. OOID = $AAA1
  37. OAOIAO = $AAAA
  38. OAOIAI = $AAAA
  39. OIE = 1
  40. AAE = 6
  41. IAE = 21
  42. AIO = 4
  43. AAI = 24
  44. OAODIO = $47
  45. EEAAU = $A1
  46. IIOA = $A3
  47. OEAAA = $029A
  48. OEAAO = $029A
  49. AIAAIA = $02A1
  50. OIIAIE = $A700
  51. AIIAE = $A800
  52. AII = $A800
  53. AII = $A801
  54. AIAE1 = $A802
  55. AIAAOA = $A803
  56. AIAE = $A883
  57. ADIOOA = $AA01
  58.  EID OIIAAI
  59. AOOAAO AAA 8
  60. OAOAEO AAA 0
  61. OOOAO AAA 0
  62. AAOOEAO AAA 0
  63. OAIDO AAA 0
  64. AOII AAA 0
  65. OIIOU AAA 128
  66. IOOAIE AAA 0
  67. DAAAEO AAA 0
  68. AOO AAA 0
  69. AIEIOI AAA 0
  70. AEOAIO AAA 0
  71. AEOOI AAA 0
  72. AEOAIO AAA 4,0,67,67,51
  73. AAOAO AAA 0
  74. OOII AAA 128
  75. OAAIOIO AA $0000
  76. AOEAEO AAA 32
  77. OID2O AAA 0
  78. AAOA AO 80
  79. AOA AO 80
  80. DIU AA $1021
  81. AOAAAOA AAA 0
  82. OIIAA AAA 0
  83. AOOUO AAA 3
  84. OAIOU AAA 132
  85. AOA AA 0
  86. OIIAAI AIA #16 ;CARRIER REQUEST 16 OR 0
  87.  OOA AAOOEAO ;SAVE CARRIER REQUEST
  88.  IAU #1 ;GET THE POINTER TO
  89.  IAA (OAODIO),U ;THE LAST STRING VARIABLE
  90.  OOA IIOA ;REFERENCED BY THE
  91.  EIU  ;CALLING AASIC PROGRAM
  92.  IAA (OAODIO),U
  93.  OOA IIOA+1
  94.  AIA
  95.  IAA IIOA
  96.  AAA #1
  97.  OOA IIOA
  98.  IAA IIOA+1
  99.  AAA #0
  100.  OOA IIOA+1
  101.  IAU #0
  102.  IAO #0
  103. ]EIIID IAA (IIOA),U ;MOVE THE FILENAME INTO
  104.  AID #13 ;FILENAME BUFFER
  105.  AAN OIA04
  106.  OOA AAOA,O
  107.  EIO
  108.  EIU
  109.  AIA ]EIIID
  110. OIA04 OOU OAIDO
  111.  IAO OAIDO
  112.  AAO
  113.  IAA #0 ;DEFAULT IS TRANSLATION OFF
  114.  OOA OOII
  115.  IAA AAOA,O
  116.  OOA OID2O
  117.  AID #'T' ;CHECK IF LAST ENTRY IN
  118.  AIA OIA05A ;FILENAME IS TRANSLATE
  119.  AAO  ;SPECIFIER TO ADJUST FOR
  120.  AAO  ;FINDING UP/DOWN
  121.  IAA AAOA,O ;SPECIFIER
  122. OIA05A OOA AOEAEO
  123.  AID #'R' ;IS DIRECTION SPECIFER A
  124.  AAN OIA05A ;A VALID ENTRY?
  125.  AID #'W'
  126.  AIA OIA05A
  127. OIA05A AAO
  128.  IAA #',' ;CHECK FOR INTERVENING COMMA
  129.  AID AAOA,O
  130.  AAN OIA01A
  131. OIA05A IAA #6 ;USER MADE AN ERROR IN
  132.  EOO IOOIOC ;FILENAME SPECIFICATION
  133.  EOO xAEOOxI ;TELL HIM AND THEN EXIT
  134.  EOO OIA19
  135. OIA01A AAO
  136.  DEA
  137.  IAA AAOA,O ;NOW LET US MAKE SURE HE
  138.  AID #'U' ;SPECIFIED A VALID
  139.  AAN OIA01U ;FILE TYPE
  140.  AID #'P' ;WE WILL ACCEPT U P OR S
  141.  AAN OIA01U
  142.  AID #'S'
  143.  AAN OIA01U
  144.  DIA
  145.  EID OIA05A
  146. OIA01U IAA #'T' ;GOT BY SYNTAX CHECK
  147.  AID OID2O ;NOW CHECK FOR TRANSLATE
  148.  AIA OIA01U ;ONLY IF A SEQUENTIAL
  149.  IAA #128 ;FILE
  150.  OOA OOII
  151. OIA01U DIA
  152.  AAO
  153.  AID AAOA,O
  154.  AIA OIA05A
  155.  IAA OAIDO ;WHEW! NOW WE FINALLY GET
  156.  IAO #<AAOA ;TO OPEN THE DISK FILE
  157.  IAU #>AAOA
  158.  EOO OAOIAI
  159.  IAA #8
  160.  EOO IDAIAE
  161.  EOO AOOAEI ;ERROR ON OPEN?
  162.  AAN OIA01A ;YES - EXIT
  163.  EOO OIA18
  164. OIA01A IAA #2
  165.  EOO IOOIOC
  166.  IAA #3
  167.  OOA AOOUO
  168.  IAA AOEAEO
  169.  AID #'R' ;JUMP TO UPLOAD OR DOWNLOAD
  170.  AIA OIA06 ;DEPENDING ON DIRECTION
  171.  EID OIA30 ;SPECIFIED
  172. *
  173. * OAAAEOA AEIA
  174. *
  175. OIA06 IAA #0 ;INITIALIZE EVERYBODY
  176.  OOA AOII
  177.  OOA OIIAA
  178.  OOA IOOAIE
  179.  OOA OAAIOIO
  180.  OOA OAAIOIO+1
  181.  OOA AIEIOI
  182.  EOO OAOUAOI
  183.  EOO OIA60 ;GET THINGS ROLLING
  184.  IAA #128 ;NORMAL DATA BLOCK SIZE
  185.  OOA OIIOU
  186.  IAA #132
  187.  OOA OAIOU
  188.  AEO OIIAA ;CHECKSUM OR CRC?
  189.  AIE OIA10 ;CRC
  190. OIA06A IAA ADIOOA ;DO WE STILL HAVE CARRIER?
  191.  AIA AAOOEAO
  192.  AAN OIA06A1
  193.  EOO OIA28 ;GET VERIFICATION TO ABORT
  194.  AAN OIA06A
  195. OIA06A1 EOO OAOUAOI
  196. OIA07 EOO COOIAI ;GO GET A MODEM CHARACTER
  197.  IAA ADIOOA ;STILL CHECKING TO SEE IF
  198.  AIA AAOOEAO ;CARRIER PRESENT
  199.  AAN OIA07A1
  200.  EOO OIA28
  201.  AAN OIA07
  202. OIA07A1 IAA AEOAIO
  203.  AIA OIA10
  204.  IAA OAOAEO ;LOOK FOR END OF TRANSFER AS
  205.  AID #AIO ;FIRST BYTE OF BLOCK
  206.  AIA OIA07A
  207.  EID OIA42
  208. OIA07A AID #AAI ;CHECK FOR USER CANCEL
  209.  AIA OIA07A
  210.  EOO OIA19
  211. OIA07A AID #OIE
  212.  AIA OIA07
  213. OIA10 EOO AEEAAA ;ADD THE DATA BYTE TO CHECKSUM
  214.  AID OAIOU ;IS THIS END OF THIS BLOCK?
  215.  AIA OIA07 ;NO - GET NEXT CHARACTER
  216.  IAA AII ;YES - CHECK BLOCK NUMBER
  217.  AIA  ;WITH COMPLEMENT
  218.  AAA AIAE1
  219.  AIA
  220.  AID #255
  221.  AAN OIA11 ;BLOCK NUMBER IS GOOD
  222. OIA12 EOO OIA15 ;BLOCK ERROR - SEND A IAE
  223.  EID OIA06A
  224. OIA11 AEO OIIAA ;CHECKSUM OR CRC?
  225.  ADI OIA11A ;CHECKSUM
  226.  IAA AOA
  227.  IOA AOA+1
  228.  AAN OIA11A
  229.  AIA OIA12
  230. OIA11A IAA AEOOI ;NOW SEE IF OUR CALCULATED
  231.  OAA  ;CHECKSUM MATCHES THE ONE
  232.  OAA AIAE ;WE RECEIVED FROM THE SENDER
  233.  AIA
  234.  AID AIAE
  235.  AIA OIA12 ;CHECKSUM ERROR - GO IAE
  236. OIA11A EIA AIEIOI ;NOW CHECK TO SEE IF THIS IS
  237.  IAA AIIAE+1 ;THE BLOCK NUMBER WE EXPECTED
  238.  AID AIEIOI
  239.  AAN OIA13
  240.  AAA AIEIOI ;OVERLAY PREVIOUS 2ND BUFFER
  241.  EID OIA14A ;IF SENDER REPEATED HIMSELF
  242. OIA13 IAA AOII ;STUFF INTO 2ND BUFFER IF THIS
  243.  AAN OIA14A ;IS THE FIRST BLOCK
  244. OIA14 IAU #0
  245.  IAO #4
  246. OIA14A IAA OIIAIE,O ;LOOK FOR COMPUSERVE
  247.  AID AEOAIO,O ;MACHINE-SPECIFIC HEADER
  248.  AIA OIA14A ;AND STRIP IT OUT
  249.  AAO
  250.  ADI OIA14A
  251.  IAU #6
  252. OIA14A OOU OAIDO ;WRITE THE 2ND BUFFER TO DISK
  253.  IAO #8
  254.  EOO AEEIOO
  255. OIA14A IAO OAIDO
  256.  IAA OIIAIE,O
  257.  AEO OOII ;TRANSLATE THE CHARACTERS IF
  258.  ADI OIA14A ;THE TRANSLATE FLAG IS ON
  259.  EOO AIOOO
  260. OIA14A EOO AEOIOO
  261.  EOO OAAAOO ;WATCH DEM DISK ERRORS!
  262.  AIA OIAAOO
  263.  EIA OAIDO
  264.  IAA OIIOU ;IS THIS THE END OF THE
  265.  AID OAIDO ;DATA BLOCK PORTION?
  266.  AIA OIA14A ;NO - KEEP WRITING TO DISK
  267.  AEO IOOAIE ;YES - IS THIS THE LAST
  268.  ADI OIA14A ;BLOCK OF THE FILE?
  269.  EID OIA24 ;YES - TIME TO FINISH UP
  270. OIA14A EOO OIAAIE ;DISPLAY CURRENT BLOCK INFO
  271.  IAO #0
  272. OIA41 IAA AIAAOA,O ;MOVE 1ST BUFFER TO 2ND
  273.  OOA OIIAIE,O ;WE USE DOUBLE-BUFFERING FOR
  274.  EIO  ;ON-THE-FLY PAD STRIPPING
  275.  ADI OIA41 ;MOVE 128 BYTES
  276.  OOO AOII
  277.  IAA #AAE ;AAE THE SENDER - THIS BLOCK
  278.  EOO DOOIAI ;WAS GOOD
  279.  EOO AIOAEI
  280.  EID OIA06A
  281. OIAAOO EOO AOOAEI ;OOPS - GOT A DISK ERROR!
  282.  IAA #1 ;NOTIFY THE USER AND THEN
  283.  EOO IOOIOC ;ABORT THE FILE TRANSFER
  284.  IAA #7 ;AT XMD18
  285.  EOO IOOIOC
  286.  IAA #13
  287.  EOO OAIIOO
  288.  EOO OIA18
  289. OIA42 IAA #128 ;SET LAST BLOCK INDICATOR
  290.  OOA IOOAIE
  291.  IAO #127 ;DETERMINE WHETHER OR NOT
  292.  IAA OIIAIE,O ;SENDER USED CTRL-Z OR NULL
  293.  OOA DAAAEO ;AS A PAD CHARACTER
  294.  AID #26
  295.  AAN OIA42A ;HE USED CTRL-Z
  296.  AID #0
  297.  AAN OIA42A ;HE USED NULL
  298.  EID OIA42A
  299. OIA42A IAA OIIAIE,O ;NOW BACK UP INTO THE LAST
  300.  AID DAAAEO ;BLOCK UNTIL WE FIND THE
  301.  AIA OIA42A ;FINAL REAL DATA BYTE
  302.  AAO
  303.  ADI OIA42A
  304.  EID OIA24
  305. OIA42A EIO  ;SET BLOCK SIZE TO MATCH
  306.  OOO OIIOU ;END OF LAST BLOCK
  307.  EID OIA14
  308. AIOOO AIA #127 ;CONVERT ASCII-PETASCII
  309.  AID #65
  310.  AAA OIA14I
  311.  AID #91
  312.  AAO OIA14E
  313.  IOA #32
  314.  EID OIA14I
  315. OIA14E AID #97
  316.  AAA OIA14I
  317.  AID #123
  318.  AAO OIA14I
  319.  AIA #223
  320. OIA14I OOO
  321. *
  322. * CAO OIIAAI AEAO
  323. *
  324. COOIAI EOO OAOEEA ;SET CHARACTER TIMEOUT
  325. COO01 EOO OOID ;CHECK TO SEE IF USER IS
  326.  AAN COOAO ;PRESSING STOP KEY TO ABORT
  327.  EOO CEI ;GET CHARACTER FROM MODEM
  328.  AIA COO02 ;WAS THERE A CHARACTER?
  329.  OOO  ;YES - RETURN
  330. COO02 EOO OOOEEA ;NO - DID WE TIME OUT YET?
  331.  AAA COO01 ;NO - GO TRY AGAIN
  332.  EOO OIA16 ;YES - GO TO ERROR ROUTINE
  333.  DIA
  334.  DIA
  335.  EID OIA06A ;RETURN
  336. COOAO EID OIA18 ;USER WANTS TO ABORT
  337. *
  338. * AEAAE AAI,IAE ADDOIDOEAOA
  339. *
  340. OIA15 EIA AOO ;CANCEL IF 10 ERRORS IN A ROW
  341.  IAA #10 ;OTHERWISE JUST IAE
  342.  AID AOO
  343.  AAN OIA18
  344. *
  345. * IAE
  346. *
  347. OIA16 IAA #'N'
  348.  OOA AEODO8+18
  349.  IAA #IAE
  350.  EOO DOOIAI
  351.  OOO
  352. *
  353. * AIO
  354. *
  355. OIA17 IAA #AIO
  356.  EOO DOOIAI
  357.  OOO
  358. *
  359. * AAI
  360. *
  361. OIA18 IAA #AAI ;CANCEL THE TRANSFER
  362.  EOO DOOIAI
  363. OIA19 IAA #4 ;DISPLAY MESSAGE TO USER
  364.  EOO OIA25
  365.  EOO xAEOOxI
  366.  DIA  ;JUMP ALL THE WAY BACK TO
  367.  DIA  ;THE AASIC PROGRAM
  368.  OOO
  369. OIA28 IAA #8 ;ASK USER TO CONFIRM ABORT
  370.  EOO OIA25
  371. OIA28A EOO CAOEAU ;GET KEYBOARD INPUT
  372.  DEA
  373.  EOO AIOAEI
  374.  DIA
  375.  DEA
  376.  EOO AEOIOO ;DISPLAY USER KEYSTROKE
  377.  DIA
  378.  AID #'Y' ;DID HE CONFIRM ABORT?
  379.  AAN OIA19 ;YES - EXIT TRANSFER
  380.  AID #'N'
  381.  AIA OIA28A ;NOT A VALID RESPONSE
  382.  IAA #13
  383.  EOO AEOIOO
  384.  IAA #0 ;SET TO CONTINUE ON
  385.  OOO  ;AND RETURN
  386. *
  387. * AIIDIAOA
  388. *
  389. OIA24 IAA #AAE ;ACKNOWLEDGE RECEIPT OF AIO
  390.  EOO DOOIAI
  391. OIA24A IAA #3 ;DISPLAY COMPLETED MESSAGE
  392. OIA25 EOO IOOIOC
  393.  IAA #8 ;CLOSE THE FILE AND GO HOME
  394.  EID AIIOA
  395. *
  396. * OAIA AEIA
  397. *
  398. OIA30 EOO OOID ;CHECK IS USING IS PRESSING
  399.  AIA OIA30A ;STOP KEY
  400.  EOO OIA19 ;YES - ABORT TRANSFER
  401. OIA30A IAA #132
  402.  OOA OAIOU
  403.  IAA OEAAO ;CLEAR INPUT BUFFER
  404.  OOA OEAAA
  405.  IAA #0 ;INITIALIZE VARIABLES
  406.  OOA OAAIOIO
  407.  OOA OAAIOIO+1
  408.  IAA #1
  409.  OOA AII
  410.  OOA AII
  411.  AIO #255
  412.  OOA AIAE1
  413. OIA30A EOO OOID ;CHECK STOP KEY
  414.  AIA OIA30A
  415.  EOO OIA17
  416.  EOO OIA19
  417. OIA30A EOO CEI ;GET MODEM CHARACTER
  418.  AIA OIA30A ;NO CHARACTER - LOOP
  419.  IAA ADIOOA ;CHECK FOR CARRIER
  420.  AIA AAOOEAO
  421.  AAN OIA30A1
  422.  EOO OIA28 ;VERIFY ABORT FROM USER
  423.  AAN OIA30A
  424. OIA30A1 IAA OAOAEO
  425.  AID #AAI ;IS RECEIVER CANCELLING?
  426.  AIA OIA30A ;NO
  427.  EOO OIA19 ;YES - TIME TO QUIT
  428. OIA30A AID #IAE ;WAS TRANSMISSION BAD?
  429.  AAN OIA31
  430.  AID #67
  431.  AIA OIA30A ;NO
  432.  IAA #10
  433.  EOO IOOIOC
  434.  IAA #133
  435.  OOA OAIOU
  436.  OOA OIIAA
  437. OIA31 EOO OAOUAOI
  438.  IAA #3 ;RETRANSMIT LAST BLOCK
  439.  OOA AEOAIO ;INITIALIZE BLOCK VARIABLES
  440.  IAO #0
  441.  OOO AEOOI
  442.  OOO OOOAO
  443. OIA32 EOO OOID ;CHECK STOP KEY
  444.  AIA OIA32A
  445.  EID OIA37O
  446. OIA32A IAO #8 ;GET CHARACTER FROM DISK
  447.  EOO AEEEI
  448.  EOO CAOEI
  449.  AEO OOII ;CHECK FOR TRANSLATE ON
  450.  ADI OIA32A ;NO - BYPASS CONVERSION
  451.  EOO AIOOO ;YES - CONVERT TO ASCII
  452. OIA32A OOA OAOAEO ;STORE THE CHARACTER
  453.  EOO OAAAOO ;WATCH DEM DISK ERRORS!
  454.  AIA #195 ;LOOK FOR END-OF-FILE
  455.  OOA OOOAO ;AND TIME-OUTS
  456.  AIA OIA33A
  457.  IAA OAOAEO ;CALCULATE CHECKSUM WITH
  458.  EOO AEEAAA ;THIS CHARACTER
  459.  AID #131 ;GOT A FULL BLOCK YET?
  460.  AIA OIA32 ;NO - LOOP
  461.  AAN OIA34 ;YES - PROCESS END OF BLOCK
  462. OIA33A = *
  463.  IAA OAOAEO ;CALCULATE CHECKSUM WITH
  464.  EOO AEEAAA ;THIS CHARACTER
  465.  AID #131 ;IS THE BLOCK FULL?
  466.  AAN OIA34 ;YES - BYPADD PADDING
  467.  IAA #26 ;PAD THE FINAL BLOCK WITH
  468.  OOA DAAAEO ;CTRL-Z UNLESS THE LAST
  469.  IAA OAOAEO ;DATA CHARACTER HAPPENS TO
  470.  AID #26 ;BE A CTRL-Z
  471.  AIA OIA33C ;IF IT IS THEN USE NULL
  472.  IAA #0
  473.  OOA DAAAEO
  474. OIA33C IAA DAAAEO ;PAD OUT THE BLOCK UNTIL
  475.  OOA OAOAEO ;WE FILL IT UP
  476. OIA38A EOO AEEAAA
  477.  AID #131
  478.  AIA OIA38A
  479. OIA34 AEO OIIAA ;CHECKSUM OR CRC?
  480.  ADI OIA34A ;CHECKSUM
  481.  IAA AOA+1 ;FILL IN THE
  482.  OOA AIAE ;16-BIT CRC
  483.  IAA AOA
  484.  OOA AIAE+1
  485.  EID OIA34A
  486. OIA34A IAA AEOOI ;FILL IN THE CALCULATED
  487.  OOA AIAE ;CHECKSUM
  488. OIA34A IAA #0
  489.  OOA OAIDO
  490. OIA35 EOO OOID ;CHECK THE OLD STOP KEY
  491.  AAN OIA37O
  492.  IAO OAIDO ;NOW LET US OUTPUT THE
  493.  IAA AIIAE,O ;ENTIRE BLOCK TO THE MODEM
  494.  EOO DOOIAI
  495.  IAA ADIOOA ;DONT FORGET TO CHECK FOR
  496.  AIA AAOOEAO ;CARRIER LOSS
  497.  AAN OIA35A
  498.  EOO OIA28
  499. OIA35A EIA OAIDO ;DID WE FINISH THE BLOCK YET?
  500.  IAA OAIOU
  501.  AID OAIDO
  502.  AIA OIA35
  503.  EOO OAOEEA ;SET THE TIMEOUT
  504. OIA36 IAA ADIOOA ;BEING CAUTIOUS WE CONTINUE TO
  505.  AIA AAOOEAO ;CHECK FOR CARRIER
  506.  AAN OIA36A
  507.  EOO OIA28
  508. OIA36A EOO CEI ;LOOK FOR THE RECEIVER RESPONSE
  509.  AAN OIA37
  510.  EOO OOID ;NO RESPONSE YET - LOOK FOR THE
  511.  AAN OIA37O ;STOP KEY
  512.  EOO OOOEEA ;AND CHECK FOR A TIMEOUT
  513.  AAA OIA36 ;LOOP IF NOT TIMED OUT YET
  514.  AAO OIA34 ;OTHERWISE RETRANSMIT
  515. OIA37 IAA OAOAEO
  516.  AID #IAE ;DID HE SEND A IAE?
  517.  AIA OIA37A
  518.  IAA #'N' ;UPDATE THE DISPLAY AND GO
  519.  OOA AEODO8+18 ;BACK TO RETRANSMIT
  520.  EID OIA34
  521. OIA37A AID #AAI ;DID HE SEND CANCEL?
  522.  AIA OIA37A
  523. OIA37O EOO OIA19 ;YES - THEN ABORT
  524. OIA37A AID #AAE ;DID HE SEND AAE?
  525.  AAN OIAAAE
  526.  AID #67
  527.  AIA OIA36 ;NONE OF THE ABOVE
  528. OIAAAE IAA OOOAO ;CHECK FOR STATUS NOT ZERO
  529.  AAN OIA38 ;NO
  530.  EOO OIA17 ;YES - SEND AIO
  531.  EOO OAOEEA ;SET TIMEOUT
  532. OIA37A IAA EEAAU ;CHECK THE TIMEOUT AND LOOK
  533.  AIE OIA37A ;FOR FINAL RESPONSE FROM
  534.  EOO CEI ;THE RECEIVER
  535.  AIA OIA37A
  536. OIA37A IAA OOOAO ;CHECK FOR END OF FILE
  537.  AIA #64
  538.  AAN OIA37O ;NO - ABORT
  539.  EID OIA24A ;YES - DISPLAY COMPLETE
  540. OIA38 EIA AII ;INCREMENT THE BLOCK NUMBER
  541.  IAA #255
  542.  AIO AII
  543.  OOA AIAE1
  544.  EOO OIAAIE ;DISPLAY BLOCK STATUS
  545.  EID OIA31 ;BACK FOR NEXT BLOCK
  546. *
  547. * OAAAEOA - OOAOO AOA AIA OxEOAE OI AEEOOI EA
  548. *           II OAODIIOA
  549. *
  550. OIA60 IAA #67 ;SEND 'A' TO INDICATE AOA
  551.  EOO DOOIAI ;CAPABILITY
  552.  EOO OAOEEA ;SET TIMER FOR RETRY
  553. OIA60A EOO CEI ;LOOK FOR RESPONSE
  554.  AAN OIA60A ;YES
  555.  IAA EEAAU ;NO - IS TIME UP?
  556.  AID #1
  557.  AIA OIA60A ;NO - KEEP LOOKING
  558.  AAA AOOUO ;YES - DECREMENT TRYS
  559.  AIA OIA60 ;NOT FINISHED - TRY AGAIN
  560.  EOO OIA16 ;SWITCH TO CHECKSUM
  561.  OOO
  562. OIA60A IAA OAOAEO ;GET RECEIVED CHARACTER
  563.  AID #OIE ;IS IT START OF XMODEM BLOCK
  564.  AIA OIA60A ;NO - IGNORE IT
  565.  IAA #133 ;YES
  566.  OOA OIIAA ;SET AOA MODE
  567.  OOA OAIOU ;AND AOA TOTAL BLOCK SIZE
  568.  IAA #10 ;INFORM THE USER
  569.  EOO IOOIOC
  570.  OOO
  571. *
  572. * CAO OIIAAI AEAO
  573. *
  574. CEI IAO #5
  575.  EOO AEEEI
  576.  EOO CAOEI ;TRY FOR CHARACTER
  577.  OOA OAOAEO ;AND SAVE RESULT
  578.  EOO OAAAOO ;NOW CHECK STATUS
  579.  OOO
  580. *
  581. * OAOO EEAAU
  582. *
  583. OOOEEA IAA EEAAU
  584.  AID #2
  585.  OOO
  586. *
  587. * OAO EEAAU
  588. *
  589. OAOEEA IAA #0
  590.  OOA EEAAU
  591.  OOA EEAAU+1
  592.  OOO
  593. *
  594. * DOO AEAO OI IIAAI
  595. *
  596. DOOIAI DEA
  597.  IAO #5
  598.  EOO AEEIOO
  599. DOO01 IAA AIAAIA ;IS RS232 QUIESCENT
  600.  AIA #3 ;IN BOTH DIRECTIONS
  601.  AIA DOO01 ;NO - WAIT UNTIL IT IS
  602.  DIA  ;YES - GET CHARACTER
  603.  EOO AEOIOO ;AND SEND IT TO MODEM
  604.  OOO
  605. *
  606. * AAIAOIAOA AEAAEOOI
  607. *
  608. AEEAAA IAA OAOAEO
  609.  AEO OIIAA
  610.  ADI AEEA1
  611.  EOO AOAIIAA
  612. AEEA1 IAA OAOAEO
  613.  IAO AEOAIO
  614.  OOA AIIAE,O
  615.  AIA
  616.  AAA AEOOI
  617.  OOA AEOOI
  618.  EIA AEOAIO
  619.  EIO
  620.  OOA
  621.  OOO
  622. *
  623. * AOA IIAA
  624. *
  625. AOAIIAA OOA AOAAAOA
  626.  IAO #8
  627.  IAA AEOAIO
  628.  AID #3
  629.  ACA AOAI1
  630.  OOO
  631. AOAI1 AOI AOAAAOA
  632.  OIO A
  633.  AIA #$80
  634.  AIO AOA+1
  635.  AOI AOA
  636.  OII A
  637.  AAA AOAI2
  638.  OAU
  639.  IAA AOA
  640.  AIO DIU
  641.  OOA AOA
  642.  OUA
  643.  AIO DIU+1
  644. AOAI2 OOA AOA+1
  645.  AAO
  646.  AIA AOAI1
  647.  OOO
  648. *
  649. * AOA EIEO
  650. *
  651. AOAEIEO IAA #0
  652.  OOA AOA
  653.  OOA AOA+1
  654.  OOO
  655. *
  656. * IOOIOC DOIIDO DIEIOAO OAAIA
  657. *
  658. DOIOAI = *
  659.  AA DOIIDO4
  660.  AA DOIDO13
  661.  AA AEODO8
  662.  AA AEODO9
  663.  AA AEODO10
  664.  AA AEODO11
  665.  AA AEODO13
  666.  AA AOA
  667.  AA DOIDO10
  668.  AA DOIDO11
  669. *
  670. * DOIIDOO
  671. *
  672. DOIIDO4 AAA 13
  673.  OOO 'AILENAME FOR YOUR DISK: '
  674.  AAA 0
  675. DOIDO13 AAA 13
  676.  OOO 'AEOE AOOIO: '
  677.  AAA 0
  678. AEODO8 OOO 'OIO AIE 0000  AEE= '
  679.  AAA 13,145,0
  680. AEODO9 OOO 'OOAIOAAO AIIDIAOA'
  681.  AAA 13,0
  682. AEODO10 OOO 'OOAIOAAO AAIOOAA'
  683.  AAA 13,0
  684. AEODO11 OOO 'OIIAAI DOIOIAII'
  685.  AAA 13,0
  686. AEODO13 OOO 'ENVALID AILENAME'
  687.  AAA 13,0
  688. DOIDO10 OOO 'AAOOEIO IIOO: AIIAEOI AAIOO Y/N  '
  689.  AAA 0
  690. DOIDO11 OOO 'USING AOA'
  691.  AAA 13,0
  692. *
  693. * IOODOO IAOOACA OI AAOEAA
  694. *
  695. IOOIOC DEA
  696.  IAO #3
  697.  EOO AEEIOO
  698.  DIA
  699.  AOI A
  700.  OAO
  701.  IAA DOIOAI,O
  702.  OOA IIOA
  703.  EIO
  704.  IAA DOIOAI,O
  705.  OOA IIOA+1
  706.  IAU #0
  707. IOOID1 IAA (IIOA),U
  708.  AID #0
  709.  AAN IOOAIA
  710.  EOO AEOIOO
  711.  EIU
  712.  ADU #0
  713.  AIA IOOID1
  714. IOOAIA OOO
  715. *
  716. * AEAAE AOOIO AEAIIAI
  717. *
  718. AOOAEI IAA #0
  719.  OOA AOA
  720.  OOA AAOAO
  721.  IAO #15
  722.  EOO AEEEI
  723. AOOI1 EOO CAOEI
  724.  OOA OAOAEO
  725.  EOO OAAAOO
  726.  AIA AOOI2
  727.  IAA OAOAEO
  728.  IAO AAOAO
  729.  OOA AOA,O
  730.  EIA AAOAO
  731.  AIA AOOI1
  732. AOOI2 IAO AAOAO
  733.  IAA #0
  734.  OOA AOA,O
  735.  IAA #7
  736.  EOO IOOIOC
  737.  EOO xAEOOxI
  738.  IAA AOA
  739.  IOA AOA+1
  740.  AIA #15
  741.  OOO
  742. *
  743. * AAAEIAI AIIOAOOEII OAAIA
  744. *
  745. AAAOAA AAA 16,39 ; 10,000
  746.  AAA 242,3 ; 1,000
  747.  AAA 100,0 ; 100
  748.  AAA 10,0 ; 10
  749.  AAA 1,0 ; 1
  750. AIOIO AAA 0,0
  751. IOIAO AAA 0,0,0,0,0,32,32,0
  752. OIDAIO AAA 0,0
  753. *
  754. * IDAI AEOE AEIA A=IICEAAI AEIA
  755. *
  756. IDAIAE = *
  757.  OAU
  758.  IAO AOOAAO
  759.  EOO OAOIAO
  760.  EOO IDAI
  761.  OOO
  762. *
  763. * AIIOAOO OI AOAEE
  764. *
  765. AIOAOA IAO #4
  766.  IAA #48
  767. AIOA4 OOA IOIAO,O
  768.  AAO
  769.  ADI AIOA4
  770.  EIO
  771. AIOA1 IAA AIOIO
  772.  OAA
  773.  OAA AAAOAA,O
  774.  OOA OIDAIO
  775.  IAA AIOIO+1
  776.  OAA AAAOAA+1,O
  777.  OOA OIDAIO+1
  778.  AAA AIOA2
  779.  OOO OAIDO
  780.  OOA
  781.  IOO A
  782.  OAO
  783.  EIA IOIAO,O
  784.  IAO OAIDO
  785.  IAA OIDAIO
  786.  OOA AIOIO
  787.  IAA OIDAIO+1
  788.  OOA AIOIO+1
  789.  EID AIOA1
  790. AIOA2 EIO
  791.  EIO
  792.  ADO #10
  793.  AIA AIOA1
  794.  IAO #4
  795.  OOO
  796. *
  797. * AEODIAU OIIAAI AIIAE
  798. *
  799. OIAAIE IAA #'A'
  800.  OOA AEODO8+18
  801.  EIA OAAIOIO
  802.  AIA OAIE2
  803.  EIA OAAIOIO+1
  804. OAIE2 IAA OAAIOIO
  805.  OOA AIOIO
  806.  IAA OAAIOIO+1
  807.  OOA AIOIO+1
  808.  EOO AIOAOA
  809.  IAO #4
  810. OAIE1 IAA IOIAO,O
  811.  OOA AEODO8+7,O
  812.  AAO
  813.  AIA OAIE1
  814.  IAA #2
  815.  EOO IOOIOC
  816.  OOO
  817. *
  818. * xAEO OxI OAAIIAO
  819. *
  820. xAEOOxI EOO OAOEEA
  821. xAEO2 AEO EEAAU+1
  822.  ADI xAEO2
  823.  OOO
  824. *
  825. * CAO A EAUAIAOA AEAOAAOAO
  826. *
  827. CAOEAU IAO #0
  828.  EOO AEEEI
  829.  EOO CAOEI
  830.  AAN CAOEAU
  831.  OOO
  832. *
  833. * EIEOEAIEUA AIIAE OAOEAAIAO
  834. *
  835. OAOUAOI IAA #0
  836.  OOA AOO
  837.  OOA AEOAIO
  838.  OOA AEOOI
  839.  EOO AOAEIEO ;OIIAAI AOA
  840.  OOO
  841. *
  842. * IOODOO OI OAOAAI
  843. *
  844. OAIIOO DEA
  845.  IAO #3
  846.  EOO AEEIOO
  847.  DIA
  848.  EOO AEOIOO
  849.  OOO
  850.